/**
 * 全局过滤器
 * @param Vue
 */

import moment from 'moment';
import state from '../store/state';

const install = function (Vue) {

    /**
     * 过滤state中的内容
     * @author Canaan
     * @date 2019/3/8 17:12
     */
    function stateFilter(arr, val) {
        let _arr = arr.filter((item) => {
            return item.value === val;
        });
        if (_arr.length === 0) {
            return val;
        }
        return _arr[0].label;
    }

    /**
     * 空字符过滤
     */
    Vue.filter('emptyFilter', function (val) {
        if (val === undefined || val === null) {
            return '-';
        }
        if (typeof val === 'string' && val.trim() === '') {
            return '-'
        }
        return val;
    });

    /**
     * 日期格式化【YYYY-MM-DD HH:mm:ss】
     */
    Vue.filter('datetimeFormat', function (val) {
        if (!val || val === 0) {
            return '';
        }
        return moment(val).format('YYYY-MM-DD HH:mm:ss');
    });

    /**
     * 日期格式化【YYYY-MM-DD HH:mm:ss.SSS】
     */
    Vue.filter('timestampFormat', function (val) {
        if (!val || val === 0) {
            return '';
        }
        return moment(val).format('YYYY-MM-DD HH:mm:ss.SSS');
    });

    /**
     * 日期格式化【YYYY-MM-DD】
     */
    Vue.filter('dateFormat', function (val) {
        if (!val || val === 0) {
            return '';
        }
        return moment(val).format('YYYY-MM-DD');
    });

    /**
     * 字符串长度格式化，最长15个字符，其余的以（...）展示
     */
    Vue.filter('strAbbr15', function (val) {
        if (val && val.length > 15) {
            return val.substring(0, 15) + "...";
        }
        return val;
    });

    /**
     * 字符串长度格式化，最长7个字符，其余的以（...）展示
     */
    Vue.filter('strAbbr7', function (val) {
        if (val && val.length > 7) {
            return val.substring(0, 7) + "...";
        }
        return val;
    });

    /**
     * 交易金额格式化，将(分)转(元)
     */
    Vue.filter('tradeAmount', function (val) {
        if (val) {
            return val / 100;
        }
        return val;
    });

    /**
     * 限制字符串长度为120
     */
    Vue.filter('ellipsis', function (val) {
        if (!val) return '';
        if (val.length > 100) {
            return val.slice(0, 100) + '...'
        }
        return val
    });


    /**
     * 用户角色
     */
    Vue.filter('roleFilter', function (val) {
        return stateFilter(state.role, val);
    });

    /**
     * 标签模板类型
     */
    Vue.filter('tagTemplateType', function (val) {
        return stateFilter(state.tagTemplateType, val);
    });

    /**
     * 组件类型
     */
    Vue.filter('viewWidgetType', function (val) {
        return stateFilter(state.viewWidgetTypeEnum, val);
    });


    /**
     * 预警时间
     */
    Vue.filter('alarmTimeFormat', function (val) {
        if (val <= 0) {
            return "无";
        }
        return val + " (分钟)"
    });

    /**
     * 可用状态
     */
    Vue.filter('disabledFilter', function (val) {
        if (val) {
            return "禁用";
        }
        return "可用";
    });

    /***
     * 保质期
     */
    Vue.filter('shelfLifeFormat', function (val) {
        if (val <= 0) {
            return "永久";
        }
        return val + " (天)"
    });



};

export default install;
